### 4.74 `viprintf`, `vfiprintf`, `vsiprintf`, `vsniprintf`, `vasiprintf`, `vasniprintf`—format argument list (integer only)

Synopsis

         #include <stdio.h>
         #include <stdarg.h>
         int viprintf(const char *fmt, va_list list);
         int vfiprintf(FILE *fp, const char *fmt, va_list list);
         int vsiprintf(char *str, const char *fmt, va_list list);
         int vsniprintf(char *str, size_t size, const char *fmt,
             va_list list);
         int vasiprintf(char **strp, const char *fmt, va_list list);
         char *vasniprintf(char *str, size_t *size, const char *fmt,
             va_list list);

         int _viprintf_r(struct _reent *reent, const char *fmt,
             va_list list);
         int _vfiprintf_r(struct _reent *reent, FILE *fp,
             const char *fmt, va_list list);
         int _vsiprintf_r(struct _reent *reent, char *str,
             const char *fmt, va_list list);
         int _vsniprintf_r(struct _reent *reent, char *str,
             size_t size, const char *fmt, va_list list);
         int _vasiprintf_r(struct _reent *reent, char **str,
             const char *fmt, va_list list);
         char *_vasniprintf_r(struct _reent *reent, char *str,
             size_t *size, const char *fmt, va_list list);

Description
`viprintf`, `vfiprintf`, `vasiprintf`, `vsiprintf`, `vsniprintf`, and `vasniprintf` are (respectively) variants of `iprintf`, `fiprintf`, `asiprintf`, `siprintf`, `sniprintf`, and `asniprintf`. They differ only in allowing their caller to pass the variable argument list as a `va_list` object (initialized by `va_start`) rather than directly accepting a variable number of arguments. The caller is responsible for calling `va_end`.

`_viprintf_r`, `_vfiprintf_r`, `_vasiprintf_r`, `_vsiprintf_r`, `_vsniprintf_r`, and `_vasniprintf_r` are reentrant versions of the above.

Returns
The return values are consistent with the corresponding functions:

Portability
All of these functions are newlib extensions.

Supporting OS subroutines required: `close`, `fstat`, `isatty`, `lseek`, `read`, `sbrk`, `write`.